#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
const int N=105;
long long a[N];
map<int,long long> t;
map<long long,int> r;
int n;
int flag;
bool dfs(long long a,int t){
    //printf("%lld %d\n",a,t);
    r[a]--;
    if(t==n){
        if(r[a]>=0){
            //printf("%lld ",a);
            return true;
        }
        else{
            return false;
        }
    }
    else{
        int fa=0;
        int fb=0;
        long long ta=3*a;
        if(r[ta]==0){
            fa=1;
        }
        else{
            if(dfs(ta,t+1)){
                printf("%lld ",ta);
                return true;
            }
            else{
                r[ta]++;
                return false;
            }
        }
        if(a%2!=0){
            return false;
        }
        ta=a/2;
        if(r[ta]==0){
            fb=1;
        }
        else{
            if(dfs(ta,t+1)){
                printf("%lld ",ta);
                return true;
            }
            else{
                r[ta]++;
                return false;
            }
        }
        if(fa && fb){
            return false;
        }
    }
}
int main(void){
    //freopen("data.txt","r",stdin);
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%lld",&a[i]);
        t[i]=a[i];
        r[a[i]]++;
    }
    // if(dfs(a[5],1)){
    //     printf("%lld\n",a[1]);
    //
    // }
    for(int i=0;i<n;i++){
        if(dfs(a[i],1)){
            printf("%lld\n",a[i]);
            break;
        }
        r[a[i]]++;
    }
    return 0;
}
